// -----------------------------
// Author: 		Dhaenens Gert 
// Creation: 	2/12/2015 9:58:25 PM				
// -----------------------------

#ifndef _IWindow_h
#define _IWindow_h

#include "Common.h"

namespace Flow
{

	class IWindow
	{
	public:

		// Release the Interface
		virtual void	Release() = 0;

		// Initialize the Window
		virtual Bool	Initialize(const GameConfig& config) = 0;
		// Close the Window
		virtual void	Close() = 0;

		// Handle the Window Messages
		virtual Bool	HandleMessages(ProcessOption::Enum type = ProcessOption::ProcessOne) const = 0;

		// Is the Window Alive
		virtual Bool	IsAlive() const = 0;
		// Is the Window Visible
		virtual Bool	IsVisible() const = 0;

		// Get the Window Handle
		virtual HWND	GetHandle() const = 0;
		// Get the Window Width
		virtual UInt32	GetWidth() const = 0;
		// Get the Window Height
		virtual UInt32	GetHeight() const = 0;

	};

}

#endif